package com.linktel.productionLine.dao;

import com.linktel.productionLine.entity.CommitUserProductionLine;
import com.linktel.productionLine.entity.dto.userProductionLine.RelationDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Linktel
 * @description 针对表【commit_user_production_line(提交人员_产线关联)】的数据库操作Mapper
 * @Date 2023-08-30 12:32:32
 */
public interface CommitUserProductionLineDao {
    /**
     * 新增提交人员_产线的关联关系
     *
     * @param commitUserId       用户id
     * @param productionLineCode 产品id
     * @param currentUserId      当前登录用户id
     * @return 是否新增成功
     */
    Boolean addRelation(@Param("commitUserId") Long commitUserId, @Param("productionLineCode") String productionLineCode, @Param("currentUserId") Long currentUserId);

    /**
     * 返回所有提交人员_产线关联关系
     *
     * @return 提交人员_产线关联关系列表
     */
    List<RelationDTO> listRelationByUserId(Long commitUserId);

    /**
     * 删除提交人员_产线关联关系
     *
     * @param id            提交人员_产线关联关系id
     * @param currentUserId 当前登录用户id
     * @return 是否删除成功
     */
    Boolean deleteRelation(@Param("id") Long id, @Param("currentUserId") Long currentUserId);

    /**
     * 根据提交人员id和产线id，得到提交人员_产线关联关系id
     *
     * @param productionLineCode 产线id
     * @return 提交人员_产线关联关系id
     */
    Long getByProductionLineId(@Param("productionLineCode") String productionLineCode);

    /**
     * 删除所有该用户关联的产线信息
     *
     * @param commitUserId  用户id
     * @param currentUserId 当前登录用户id
     * @return 是否删除成功
     */
    Boolean deleteRelationByCommitUserId(@Param("commitUserId") Long commitUserId, @Param("currentUserId") Long currentUserId);

    /**
     * 根据id得到关联表信息
     *
     * @param id 关联表信息id
     * @return 关联表信息信息
     */
    CommitUserProductionLine getByCommitUserId(Long id);
}
